perm filename PUBMAC.PUB[2,TES] blob sn#009902 filedate 1972-06-06 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00004 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	.REQUIRE "PUBMAC.DFS[1,3]" SOURCE_FILE
 00005 00003	.SS |STANDARD FRONT(SECPRINT, SSPRINT, PAGEPRINT, INDEXCHAR)|
 00009 00004	.SEC |MACROS DECLARED BY `STANDARD FRONT'|
 00012 ENDMK
⊗;
.REQUIRE "PUBMAC.DFS[1,3]" SOURCE_FILE
.STANDARD FRONT("I", "!-A", "!.1")
.EVERY HEADING({DATE},,{SECNAME})
.EVERY FOOTING(,{PAGE!})
.MACRO BEG ⊂BEGIN NOFILL INDENT 10 ⊃
.SEC |MACROS DECLARED IN `PUBMAC.DFS'|
Do not alter PUBMAC.DFS!  You may read it to see how the macros
work.  To change them, copy them to your manuscript first.
To use them as is, "REQUIRE PUBMAC.DFS[1,3]".
.SS |FRACTION(NUMERATOR,DENOMINATOR)|
Neither argument should contain control characters, especially
not any of these:
.BEG
↑ ↓ [ ] &
.END
The character # is considered to be a space.

Input:
.BEG
{FRACTION("AB - CD",2)}
.END
Output:
.BEG
AB - CD
-------
   2
.END
This macro declares its own control characters, but to call it
from a text line you obviously must have turned on "{".
.SS SCRIPTS
It turns on the standard subscripting and underlining control characters:
.BEG
↑ ↓ [ ] & _ ∪
.END
.SS GREEKS
It turns on the standard line-formatting control charcters:
.BEG
{ ∂ \ α β # ← → ∞
.END
.SS FORMAT
It calls both SCRIPTS and GREEKS.
.SS |STANDARD FRONT(SECPRINT, SSPRINT, PAGEPRINT, INDEXCHAR)|
If SECPRINT is non-null, this macro declares for you a unit called SECTION
whose PRINTING pattern is SECPRINT.  It also declares
a macro called SEC that should be called at the beginning of each
section.  SEC is described later in this document.

If SSPRINT is non-null, this macro declares for you a unit called
SUBSECTION that is IN SECTION and whose PRINTING pattern is SSPRINT.
It also declares a macro called SS that should be called at the beginning
of each subsection.  SS is described later in this document.

If PAGEPRINT is non-null, this macro declares for you a unit PAGE that
is IN SECTION and whose printing clause uses PAGEPRINT.

This macro also makes preparations for a table of contents that is generated
by the macros SEC and SS and that can be printed using the macro STANDARD
BACK (described next).

If INDEXCHAR is non-null, then it must be a single character, e.g., "%".
This macro automatically declares for you a signal
response that lets you send a phrase to the INDEX by bracketing it
on the left and right by INDEXCHAR.  The macro STANDARD BACK must be
called at the end of the document to actually print the index.

Example:
The document you are reading began with the following macro call:
.BEG
 .STANDARD FRONT("I", "!-A", "!.1")
.END
The section you are reading began with the following two macro calls:
.BEG
 .SEC MACROS AUTOMATICALLY DECLARED BY PUB
 .SS |FRACTION(NUMERATOR,DENOMINATOR)|
.END
.SS STANDARD BACK
If you called STANDARD FRONT at the beginning of your manuscript, then
you should call STANDARD BACK at the end.  It has no arguments.  It
prints the index (if you asked STANDARD FRONT for one) and it prints
the table of contents.

STANDARD FRONT sets some global variables that STANDARD BACK examines.
There names are SUBBING and INDEXING.

.SEC |MACROS DECLARED BY `STANDARD FRONT'|
See the previous section to learn about the macro STANDARD FRONT.
It may declare the following macros for you.
.SS |SEC(NAME)|
It goes to a new
page, counts up the section number, prints titles as exemplified
by the document you are reading, and sends the information to the
table of contents.

It also sets the global variable SECNAME to NAME, which might be
useful for producing headings.  This document began with the macro calls:
.BEG
 .EVERY HEADING({DATE},,{SECNAME})
 .EVERY FOOTING(,{PAGE!})
.END
SECNAME is actually set to NULL before the first page of the new section is
begun.  After the titles are printed, then it is set to NAME.  When the
first page of the table of contents and the index are begun, SECNAME is
set to NULL, but on subsequent pages, it is set to "TABLE OF CONTENTS"
or "INDEX", as is appropriate.

The NAME may not include quotation marks.  Follow the rules for macro
arguments explained in PUB.DOC[S,DOC].
.SS |SS(NAME)|
It goes to a new
page only if there are fewer than 7 lines left on the current page,
otherwise it skips three lines.
Then it sends an entry to the table of contents and prints the section name
and number in the form appearing in this document.

It also sets the global variable SSNAME to NAME, which might be useful for
producing headings.  Macro SEC sets SSNAME to NULL.
The NAME may not contain quotation marks (but it can be bracketed by them).
.STANDARD BACK